package l1j.opqlo.Server.etcitem.卷軸;

import l1j.server.server.model.L1ItemDelay;
import l1j.server.server.model.L1Teleport;
import l1j.server.server.model.Instance.L1ItemInstance;
import l1j.server.server.model.Instance.L1PcInstance;
import l1j.server.server.model.skill.L1BuffUtil;
import l1j.server.server.serverpackets.S_Paralysis;
import l1j.server.server.serverpackets.S_ServerMessage;
import l1j.server.server.templates.L1BookMark;

public class TeleportScroll {

	/** 瞬間移動卷軸相關 */
	public static void begin(final int[] data, final L1PcInstance pc,
			final L1ItemInstance l1iteminstance) {
		// final int itemId = l1iteminstance.getItemId();

		/*
		 * if (itemId == 140100 || itemId == 40100 || itemId == 40099 //
		 * 祝福されたテレポートスクロール、テレポートスクロール || itemId == 40086 || itemId == 40863) {
		 */// スペルスクロール(テレポート)

		// 所在地圖編號
		// int mapID = data[0];

		// 記憶座標點排序
		final int btele = data[1];

		// 所在位置 是否允許傳送
		if (!pc.getMap().isTeleportable() && !pc.isGm()) {
			// 647 這附近的能量影響到瞬間移動。在此地無法使用瞬間移動。
			pc.sendPackets(new S_ServerMessage(647));
			pc.sendPackets(new S_Paralysis(S_Paralysis.TYPE_TELEPORT_UNLOCK,true));
		} else {
			final L1BookMark bookm = pc.getBookMark(btele);
			if (bookm != null) {
				L1Teleport.teleport(pc, bookm.getLocX(), bookm.getLocY(),bookm.getMapId(), pc.getHeading(), true);
			} else {
				L1Teleport.randomTeleport(pc, true);
			}
			// 刪除道具
			pc.getInventory().removeItem(l1iteminstance, 1);
			// 卷軸傳送後 使用物品延遲完才解開停止狀態
		}
		L1ItemDelay.teleportUnlock(pc, l1iteminstance);
		L1BuffUtil.cancelAbsoluteBarrier(pc); // アブソルート バリアの解除
	}
	// if(bookm == null){
	// if (pc.getMap().isTeleportable() || pc.isGm()) {
	// final L1Location newLocation = pc.getLocation().randomLocation(200,
	// true);
	// final int newX = newLocation.getX();
	// final int newY = newLocation.getY();
	// final short mapId = (short) newLocation.getMapId();
	// // if (itemId == 40086) { // マステレポートスクロール
	// // for (final L1PcInstance member :
	// L1World.getInstance().getVisiblePlayer(pc)) {
	// // if (pc.getLocation().getTileLineDistance(
	// // member.getLocation()) <= 3
	// // && member.getClanid() == pc.getClanid()
	// // && pc.getClanid() != 0
	// // && member.getId() != pc.getId()) {
	// // L1Teleport.teleport(member, newX, newY,mapId, 5, true);
	// // }
	// // }
	// // }
	// L1Teleport.teleport(pc, newX, newY, mapId, 5, true);
	// // 卷軸傳送後 使用物品延遲完才解開停止狀態
	// L1ItemDelay.teleportUnlock(pc, l1iteminstance);
	// pc.getInventory().removeItem(l1iteminstance, 1);
	// } else {
	//
	// }
	//
	// }else{// ブックマークを取得出來たらテレポート
	// if (pc.getMap().isEscapable() || pc.isGm()) {
	// final int newX = bookm.getLocX();
	// final int newY = bookm.getLocY();
	// final short mapId = bookm.getMapId();
	// if (itemId == 40086) { // マステレポートスクロール
	// for (final L1PcInstance member :
	// L1World.getInstance().getVisiblePlayer(pc)) {
	// if (pc.getLocation().getTileLineDistance(member.getLocation()) <= 3
	// && member.getClanid() == pc.getClanid()
	// && pc.getClanid() != 0
	// && member.getId() != pc.getId()) {
	// L1Teleport.teleport(member, newX, newY,mapId, 5, true);
	// }
	// }
	// }
	// L1Teleport.teleport(pc, newX, newY, mapId, 5, true);
	// // 卷軸傳送後 使用物品延遲完才解開停止狀態
	// L1ItemDelay.teleportUnlock(pc, l1iteminstance);
	// pc.getInventory().removeItem(l1iteminstance, 1);
	// } else {
	// //L1Teleport.teleport(pc, pc.getX(), pc.getY(),pc.getMapId(),
	// pc.getHeading(), false);
	// pc.sendPackets(new S_Paralysis(S_Paralysis.TYPE_TELEPORT_UNLOCK, true));
	// pc.sendPackets(new S_ServerMessage(79));
	// }
	// }
	//
	// L1BuffUtil.cancelAbsoluteBarrier(pc); // アブソルート バリアの解除
	// }

}
